package ceyan;
import java.util.HashMap;
import java.util.Random;
import java.util.Set;
import java.util.HashMap;

public class learn2 {
    public static void main(String[] args) {
        //集合思路
        int num[]=new int[10];
        HashMap hashMap=new HashMap();
        for(int i=0;i<num.length;i++){
            int n=(int)(Math.random()*10);
            num[i]=n;
        }
        //每个数出现的次数
        for(int i=0;i<num.length;i++){
            //次数的初始值
            int m=0;
            for(int j=0;j<num.length;j++){
                if(num[i]==num[j]){
                    m++;
                }
            }
            System.out.println(num[i]);
            //集合键值对输出
            hashMap.put(num[i],m);
        }
        Set set=hashMap.keySet();
        for(Object o:set){
            System.out.println("数字"+o.toString()+"出现的次数:"+hashMap.get(o));
        }
        Integer max=(Integer) hashMap.get(num[0]);
        int max1=max.intValue();
        for(Object o1:set){
            Integer i1=(Integer) hashMap.get(o1);
            if(max1<i1.intValue()){
                max1=i1.intValue();
            }
        }
        for(Object o1:set){
            Integer i1=(Integer) hashMap.get(o1);
            if(i1==max1){
                System.out.println("出现次数最多的数字是:"+o1.toString());
            }
        }
        int min=10;
        for(Object o1:set){
            Integer i1=(Integer) hashMap.get(o1);
            Integer i2=(Integer) o1;
            if(i1==1){
                if(i2<min){
                    min=i2;
                }
            }
        }
        System.out.println("最小的数字为"+min);

        //答案
        //创建对象，生成一个随机数组
        /*int[] ints = new int[10];
        Random random = new Random();
        for (int i = 0; i < ints.length; i++) {
            ints[i] = random.nextInt(9);
            System.out.print(ints[i]+" ");
        }
        System.out.println();

        //按照元素互相比较的方法进行统计的思路
        int count = 0;
        int n = 0;
        int[][] numbs = new int[ints.length][2];
        outhor:
        for (int i = 0; i < ints.length; i++) {//遍历ints[i]的元素
            //左侧若有重复，则跳出循环遍历下一个元素
            for (int j = i-1; j >= 0; j--) {
                if(ints[i]==ints[j]){
                    continue outhor;
                }
            }
            //右侧有重复，则计数累加，并输出数字
            for (int j = i; j < ints.length; j++) {
                if(ints[i]==ints[j]){
                    count++;
                }
            }
            System.out.println("数字"+ints[i]+ "出现了"+count+"次，");//输出数字和出现次数

            //用二维数组存储下每个数字及出现次数,数组有效长度为n,这里数字已无重复
            numbs[n][0] = ints[i];
            numbs[n][1] = count;
            n++;
            count = 0;
        }
        for (int i = 0; i < n; i++) {
            System.out.println(numbs[i][0] +"\t"+ numbs[i][1]+"，");//查看二维数组
        }

        //提取最大的计数值（出现次数）
        int maxc = 0;
        for (int i = 0; i < n; i++) {
            if(numbs[i][1]>maxc){
                maxc = numbs[i][1];
            }
        }
        //输出计数值(出现次数)为最多的所有数字
        System.out.print("出现次数最多的数字是：");
        for (int i = 0; i < n; i++) {
            if(numbs[i][1] == maxc){
                System.out.print(numbs[i][0]+ " ");
            }
        }
        System.out.println();

        //提取计数（出现次数）为1的数字,存储在数组中，数组有效长度为m
        int[] num =new int[n];
        int m = 0;
        System.out.print("只出现一次的数字是：");
        for (int i = 0; i < n; i++) {
            if(numbs[i][1] == 1) {
                System.out.print(numbs[i][0] + " ");
                num[m] = numbs[i][0];
                m++;
            }
        }
        //输出最小数字
        int min = num[0];
        for (int i = 1; i < m; i++) {
            if(num[i]<min){
                min = num[i];
            }
        }
        System.out.println("其中最小的数字是："+min);*/
        //自己的思路
        //定义一个一位数组
        /*int num[]=new int[10];
        //定义随机数
        for(int i=0;i<10;i++){
            num[i]=(int)(Math.random()*9+0);
            System.out.println(num[i]);
            //定义出现的次数
            int temp=0;
           if(num[i]==0){
               temp=temp+1;
               System.out.println("0出现的次数"+temp);
           } else if(num[i]==1){
               int sum=0;
               sum=sum+1;
               System.out.println("1出现的次数"+sum);
           } else if(num[i]==2){
               int sum1=0;
               sum1=sum1+1;
               System.out.println("二出现的次数"+sum1);
           }else if(num[i]==3){
               int sum2=0;
               sum2=sum2+1;
               System.out.println("3出现的次数"+sum2);
           }
           else if(num[i]==4){
               int sum3=0;
               sum3=sum3+1;
               System.out.println("四出现的次数"+sum3);
           }
           else if(num[i]==5){
               int sum4=0;
               sum4=sum4+1;
               System.out.println("五出现的次数"+sum4);
           }
           else if(num[i]==6){
               int sum5=0;
               sum5=sum5+1;
               System.out.println("6出现的次数"+sum5);
           }
           else if(num[i]==7){
               int sum6=0;
               sum6=sum6+1;
               System.out.println("7出现的次数"+sum6);
           }
           else if(num[i]==8){
               int sum7=0;
               sum7=sum7+1;
               System.out.println("8出现的次数"+sum7);
           }
           else if(num[i]==9){
               int sum8=0;
               sum8=sum8+1;
               System.out.println("9出现的次数"+sum8);
           }
        }
        //用来交换的
        int count;
        for(int i=0;i< num.length;i++){
            for(int j=0;j<i+1;j++){
                if(num[i]>num[j]){
                    count=num[i];
                    num[i]=num[j];
                    num[j]=count;
                }}}
        for(int i=0;i<num.length;i++) {
            System.out.println(num[i]);
        }
        System.out.println("最小的数是:"+ num[9]);*/

        }
}


